Rust
Author

(Milanesi, 2022, pp. 2-4)

¡Hola Mundo!

Veamos cómo imprimir algún texto en la terminal. Cambie el programa del apartado anterior por el siguiente:

fn main() {
    print!("Hello, world!");
}

Si dicho código se compila y ejecuta como antes, imprimirá: “¡Hola, mundo!”.

Observe que la línea recién agregada contiene ocho elementos de sintaxis, también conocidos como tokens. Examinémoslos:

  • print: Es el nombre de una macro definida en la biblioteca estándar de Rust.

  • !: Este carácter especifica que el nombre anterior indica una macro. Sin tal símbolo, “imprimir” indicaría una función. No existe tal función en la biblioteca estándar de Rust, por lo que obtendría un error de compilación. Una macro es algo similar a una función: es un código Rust que tiene un nombre. Al utilizar este nombre, solicita insertar dicho código en este punto. La principal diferencia entre una llamada de función y una invocación de macro es que una llamada de función ejecuta en tiempo de ejecución el código de la definición de función, que se encuentra en otra parte del programa, por lo que el control de la ejecución se transfiere a otra parte, mientras que una invocación de macro le pide al compilador que reemplace la invocación de macro con el cuerpo de la definición de macro.

  • (: Inicia la lista de argumentos de la macro.

  • ": Inicia la cadena literal.

  • Hello, world!: Es el contenido de la cadena literal.

  • ": Finaliza la cadena literal.

  • ): Finaliza la lista de argumentos de la macro.

  • ;: Finaliza la declaración.

Examinemos el significado de la frase cadena literal. La palabra cadena significa secuencia finita de caracteres, que posiblemente incluya espacios y puntuación. La palabra literal significa especificado directamente en el código fuente. Por lo tanto, una cadena literal es una secuencia finita de caracteres (posiblemente incluyendo espacios y puntuación) especificada directamente en el código fuente. Una cadena no lineal, en cambio, es una variable cuyo valor en tiempo de ejecución es una cadena. Dicha cadena podría leerse desde un archivo, o escribirse por el usuario, o copiarse desde una cadena literal, como veremos cuando se expliquen las variables de cadena.

La macro print simplemente inserta en el programa un código que imprime en el terminal el texto que ha recibido como argumento.

Rust siempre distingue entre letras mayúsculas y minúsculas; distingue entre mayúsculas y minúsculas. Para todos los caracteres que están fuera de cadenas literales y comentarios, si reemplaza una letra mayúscula por una minúscula o viceversa, normalmente obtendrá un error de compilación o, en cualquier caso, un programa con un comportamiento diferente. En cambio, realizar dichos cambios dentro de cadenas literales siempre permite una compilación exitosa, pero es probable que el comportamiento del programa sea diferente.

Por ejemplo:

fn Main() {}

Si compila este programa, obtendrá el error de compilación “función principal no encontrada”, ya que no hay ninguna función “principal” (con una m minúscula) definida en el programa.

De ahora en adelante, excepto cuando se especifique, asumiremos que el código de ejemplo estará dentro de las llaves de la función “principal”, por lo que se omitirán las llaves y el texto que las precede.

Back to top